#!/usr/bin/env python
"""
Ejercicio 1 - 2012

Programa para implementar el echo. Version TCP


"""
import socket, sys


#Crear Socket

class Socket():
	
	def __init__(self,host,port,maxpedidos,bytess,tipo):
		self.adress=""
		self.client=""
		self.data=""
		self.nd_vecinos = []
		'''
		my_dict = {'ip': li, 'puerto': promedio}
		self.nd_vecinos(my_dict)
		'''
		self.bytess = bytess
		self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		self.s.bind((host,port))
		self.s.listen(maxpedidos)
		raw_input('')
		
		# Voy a contactarme con los otros Nodos Vecinos
		nodo_send = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
		nodo_send.connect(('localhost',4500))
		
		# Estructura para recuperar los otros supernodos
		
		data = "GET / HTTP/1.1\r\n"
		data += "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1\r\n"
		data += "Host: %s\r\n"%('localhost')
		data +="Connection: keep-alive\r\n"
		data += "Connection: close\r\n\r\n"
		response_data = ''
		print data
		
		response_data = ''
		# Mando la data
		nodo_send.send(data)
		while 1:
			tmp = nodo_send.recv(100)
			if tmp:
				response_data += tmp
				
				
			else:
				break
		
		print response_data 
		
		vector = response_data.split('\n')
		
		# Agrego a mano esos 2 supuestos ND
		self.nd_vecinos.append(vector[1].split(':'))
		self.nd_vecinos.append(vector[2].split(':'))
		
		for i in self.nd_vecinos:
			
			val = i
			
			ip = val[0]
			port = val[1]
			
			print ip,port
			raw_input('')
			
			k = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
			try:
				k.connect((ip,int(port)))			
			except:
				print (ip,tcp_port)
				print 'No conectado'
				raw_input('')
		# Fin de pedido
	def Conexion(self):
		self.client,self.adress = self.s.accept() 
		#print "chau"
	
	def Recibir_datos(self):
		print "Esperando datos "
		self.data = self.client.recv (bytess)
		print self.data
	
	def Respuesta(self):
		self.client.send(self.data)
	
	def Cierro_conexion(self):
		self.client.close()


host = (raw_input('Ingrese el IP donde Corro el Servidor: ' ))

port = int(raw_input ('Ingrese el puerto: ' ))




print " Conectando con el servidor...." 
print " Servidor en funcionamiento " 	

salir = 1
if (salir == 1):	
	si = Socket(host,port,5,512,1)
	
	si.Conexion()
	si.Recibir_datos()
	si.Respuesta()
	raw_input('')
	#si.Cierro_conexion()
	

